group "{{groupId}}"
version "{{artifactVersion}}"

wrapper {
    gradleVersion = "6.9"
    distributionUrl = "https://services.gradle.org/distributions/gradle-$gradleVersion-all.zip"
}

buildscript {
    ext.kotlin_version = "1.4.32"
    ext.ktor_version = "1.5.4"
    ext.shadow_version = "6.1.0"

    repositories {
        maven { url "https://repo1.maven.org/maven2" }
        maven { url "https://plugins.gradle.org/m2/" }
    }
    dependencies {
        classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version")
        classpath("com.github.jengelman.gradle.plugins:shadow:$shadow_version")
    }
}

apply plugin: "java"
apply plugin: "kotlin"
apply plugin: "application"

mainClassName = "io.ktor.server.netty.DevelopmentEngine"

// Initialization order with shadow 2.0.1 and Gradle 6.9 is weird.
// See https://github.com/johnrengelman/shadow/issues/336#issuecomment-355402508
apply plugin: "com.github.johnrengelman.shadow"

sourceCompatibility = 1.8

compileKotlin {
    kotlinOptions.jvmTarget = "1.8"
}

compileTestKotlin {
    kotlinOptions.jvmTarget = "1.8"
}

shadowJar {
    baseName = "{{artifactId}}"
    classifier = null
    version = null
}

repositories {
    maven { setUrl("https://repo1.maven.org/maven2") }
    maven { setUrl("https://dl.bintray.com/kotlin/ktor") }
    maven { setUrl("https://dl.bintray.com/kotlin/kotlinx") }
}

dependencies {
    implementation("org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version")
    implementation("ch.qos.logback:logback-classic:1.2.1")
{{#hasAuthMethods}}
    implementation("com.typesafe:config:1.4.1")
{{/hasAuthMethods}}
    implementation("io.ktor:ktor-auth:$ktor_version")
{{#hasAuthMethods}}
    implementation("io.ktor:ktor-client-apache:$ktor_version")
{{/hasAuthMethods}}
    implementation("io.ktor:ktor-gson:$ktor_version")
{{#featureLocations}}
    implementation("io.ktor:ktor-locations:$ktor_version")
{{/featureLocations}}
{{#featureMetrics}}
    implementation("io.dropwizard.metrics:metrics-core:4.1.18")
    implementation("io.ktor:ktor-metrics:$ktor_version")
{{/featureMetrics}}
    implementation("io.ktor:ktor-server-netty:$ktor_version")

    testImplementation("junit:junit:4.13.2")
}
